//package com.gtw.common.interceptor;
//
//
//import com.gtw.common.annotation.AuthIgnoreSys;
//import com.gtw.common.exception.RRException;
//import com.gtw.modules.entity.SysUserToken;
//import com.gtw.modules.sys.service.SysUserTokenService;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.web.method.HandlerMethod;
//import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
///** 权限(Token)验证
// *
// * @author wuye
// * @date 2018/1/15
// */
//@Component
//public class AuthorizationInterceptorSys extends HandlerInterceptorAdapter {
//
//    @Autowired
//    private SysUserTokenService tokenService;
//
//    public static final String USER_KEY = "LOGIN_USER_KEY_SYS";
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        AuthIgnoreSys annotation;
//        if(handler instanceof HandlerMethod) {
//            annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnoreSys.class);
//        }else{
//            return true;
//        }
//
//        //如果有@IgnoreAuth注解，则不验证token
//        if(annotation != null){
//            return true;
//        }
//
//        //从header中获取token
//        String token = request.getHeader("token");
//        //如果header中不存在token，则从参数中获取token
//        if(StringUtils.isBlank(token)){
//            token = request.getParameter("token");
//        }
//
//        //token为空
//        if(StringUtils.isBlank(token)){
//            throw new RRException("token不能为空");
//        }
//
//        //查询token信息
//        SysUserToken tokenEntity = tokenService.queryByToken(token);
//        if(tokenEntity == null || tokenEntity.getExpireTime().getTime() < System.currentTimeMillis()){
//            throw new RRException("token失效，请重新登录");
//        }
//
//        //设置userId到request里，后续根据userId，获取用户信息
//        request.setAttribute(USER_KEY, tokenEntity.getUserId());
//
//        return true;
//    }
//}
